/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package DB;

import bean.Autore;
import bean.Libro;
import bean.TellicoObj;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;

/**
 *
 * @author vincenzoscognamiglio
 */
public class DBFunctions {

    private static Connection conn = null;

    public static Connection createConnection() {
        try {
            Class.forName("org.apache.derby.jdbc.ClientDriver").newInstance();
            //Get a connection
            //       conn = DriverManager.getConnection("jdbc:derby://localhost:1527/ebm;create=true;user=root");
            conn = DriverManager.getConnection("jdbc:derby:derbydb;user=root;password=root");

        } catch (Exception except) {
            except.printStackTrace();
        }
        return conn;
    }

    public static void insertBookFile(String autoreDir, String libroDir, String nomeFile) {
        Connection conn = DBFunctions.createConnection();
        autoreDir = autoreDir.replace("'", "''");
        libroDir = libroDir.replace("'", "''");
        nomeFile = nomeFile.replace("'", "''");
        String insSQL = "INSERT INTO APP.FILE_LIBRI (AUTORE_DIR, LIBRO_DIR, PATH) VALUES ('" + autoreDir + "', '" + libroDir + "', '" + nomeFile + "')";
        try {
            PreparedStatement ps = conn.prepareStatement(insSQL);
            ps.execute();

        } catch (Exception e) {
            System.err.println(e.getMessage());
        }

    }

    public static void insertTellicoData(TellicoObj tell) {
        try {
            Connection conn = DBFunctions.createConnection();
            String querySQL = "SELECT * FROM APP.TELLICO_IMPORT WHERE "
                    + "LOWER(TITOLO) LIKE '" + tell.getTitolo().toLowerCase().replace("'", "''") + "'"
                    + "AND LOWER(SOTTOTITOLO) LIKE '" + tell.getSottotitolo().toLowerCase().replace("'", "''") + "'"
                    + "AND LOWER(AUTORE) LIKE '" + tell.getAutore().toLowerCase().replace("'", "''") + "'";
            PreparedStatement psquery = conn.prepareStatement(querySQL);
            ResultSet rs = psquery.executeQuery();
            //System.out.println("DIM:" + rs.);
//           if (rs.getFetchSize()==0)
            if (!rs.next()) {
                String insSQL = "INSERT INTO APP.TELLICO_IMPORT (TITOLO,SOTTOTITOLO,AUTORE,"
                        + "EDITORE,CASA_EDITRICE,ISBN,"
                        + "PAGINE,"
                        + "ANNO_PUBBLICAZIONE,COPERTINA,TRAMA)"
                        + "VALUES ('" + tell.getTitolo().replace("'", "''") + "', '" + tell.getSottotitolo().replace("'", "''") + "', '" + tell.getAutore().replace("'", "''") + "',"
                        + "'" + tell.getEditore().replace("'", "''") + "', '" + tell.getCasaEditrice().replace("'", "''") + "', '" + tell.getISBN().replace("'", "''") + "',"
                        + "" + tell.getPagine() + ","
                        + "'" + tell.getAnnoPubblicazione().replace("'", "''") + "', '" + tell.getCopertina().replace("'", "''") + "', '" + tell.getTramaRiassunto().replace("'", "''") + "'"
                        + ")";
                System.out.println("SQL--> " + insSQL);
                PreparedStatement ps = conn.prepareStatement(insSQL);
                ps.execute();
            }
        } catch (Exception e) {
            System.err.println(e.getMessage());
        }

    }

    public static void insertAutore(Autore aut) {
        try {
            Connection conn = DBFunctions.createConnection();

            String insSQL = "INSERT INTO APP.AUTORI (NOME,COGNOME)"
                    + "VALUES ('" + aut.getNome().replace("'", "''") + "','" + aut.getCognome().replace("'", "''") + "')";
            System.out.println("SQL--> " + insSQL);
            PreparedStatement ps = conn.prepareStatement(insSQL);
            ps.execute();

        } catch (Exception e) {
            System.err.println(e.getMessage());
        }

    }

    public static void insertLibro(Libro book) {
        try {
            Connection conn = DBFunctions.createConnection();

            String insSQL = "INSERT INTO APP.DATI_LIBRI (TITOLO, SOTTOTITOLO, ISBN, TRAMA, DATA_PUBBLICAZIONE, CASA_EDITRICE, PAGINE)"
                    + "VALUES ('" + book.getTitolo().replace("'", "''")
                    + "','" + book.getSottotitolo().replace("'", "''")
                    + "','" + book.getISBN().replace("'", "''")
                    + "','" + book.getTrama().replace("'", "''")
                    + "','" + book.getAnnoDiPubblicazione().replace("'", "''")
                    + "','" + book.getCasaEditrice().replace("'", "''")
                    + "'," + book.getNumeroPagine()
                    + ")";
            System.out.println("SQL--> " + insSQL);
            PreparedStatement ps = conn.prepareStatement(insSQL);
            ps.execute();

        } catch (Exception e) {
            System.err.println(e.getMessage());
        }

    }

    public static Libro getLibroByAutTitle(String nomeAutore, String cognomeAutore, String titolo) {
        Libro book = new Libro();
        try {
            Connection conn = DBFunctions.createConnection();            
            String querySQL = "SELECT TITOLO,  SOTTOTITOLO, ISBN, TRAMA, DATA_PUBBLICAZIONE, CASA_EDITRICE, PAGINE FROM APP.DATI_LIBRI WHERE LOWER('" + titolo + "') LIKE LOWER(TITOLO||'%')";
            PreparedStatement psquery = conn.prepareStatement(querySQL);
            ResultSet rs = psquery.executeQuery();
            while (rs.next()) {
                book.setTitolo(rs.getString("TITOLO"));
                book.setSottotitolo(rs.getString("SOTTOTITOLO"));
                book.setAnnoDiPubblicazione(rs.getString("DATA_PUBBLICAZIONE"));
                book.setISBN(rs.getString("ISBN"));
                book.setTrama(rs.getString("TRAMA"));
                book.setNumeroPagine(rs.getInt("PAGINE"));
                DBFunctions.insertLibro(book);
                System.out.println("richiamato:" + book.getTitolo());
            }
        } catch (Exception e) {
            System.err.println(e.getMessage());
        } finally {
            return book;
        }


    }
}
